import sys
RI = lambda: list(map(int, sys.stdin.readline().strip().split()))
n, q = RI()
oa = RI()
le = len(oa) - 1
f = [0] * (n + 1)
ps = [0] * (le * 2 + 2)
def up(t, i, l, r, x, d):
if x < l or x > r:
return -1
ps[t] += d
if l == r:
return l
if f[i]:
x = l + r - x
mi = l + r >> 1
if x > mi:
return up(t * 2 + 1, i + 1, mi + 1, r, x, d)
return up(t * 2, i + 1, l, mi, x, d)
def qu(t, i, l, r, a, b):
if b < l or a > r:
return 0
if a <= l and b >= r:
return ps[t]
if f[i]:
a, b = l + r - b, l + r - a
mi = l + r >> 1
return qu(t * 2, i + 1, l, mi, a, b) + qu(t * 2 + 1, i + 1, mi + 1, r, a, b)
for i, v in enumerate(oa):
up(1, 0,0, le, i, v)
for _ in range(q):
ql = RI()
qt, qi = ql[0], ql[1]
if qt & 2:
f[n - qi] ^= 1
f[n - qi - 1] ^= qt & 1
elif qt & 1:
gi = up(1, 0,0, le, qi - 1, 0)
up(1, 0, 0, le, qi - 1, ql[2] - oa[gi])
oa[gi] = ql[2]
else:
print(qu(1, 0, 0, le, ql[1] - 1, ql[2] - 1))
Non empty subsets | 1630A - And Matching |
1630B - Range and Partition | 1630C - Paint the Middle |
1630D - Flipping Range | 1328A - Divisibility Problem |
339A - Helpful Maths | 4A - Watermelon |
476A - Dreamoon and Stairs | 1409A - Yet Another Two Integers Problem |
977A - Wrong Subtraction | 263A - Beautiful Matrix |
180C - Letter | 151A - Soft Drinking |
1352A - Sum of Round Numbers | 281A - Word Capitalization |
1646A - Square Counting | 266A - Stones on the Table |
61A - Ultra-Fast Mathematician | 148A - Insomnia cure |
1650A - Deletions of Two Adjacent Letters | 1512A - Spy Detected |
282A - Bit++ | 69A - Young Physicist |
1651A - Playoff | 734A - Anton and Danik |
1300B - Assigning to Classes | 1647A - Madoka and Math Dad |
710A - King Moves | 1131A - Sea Battle |